package com.example.algorithm.no0162.solution;

import com.example.algorithm.no0162.Solution;

/**
 * @Description 解答-寻找峰值-迭代二分查找
 * 时间复杂度 : O(log_2(n))。 每一步都将搜索空间减半。因此，总的搜索空间只需要 log_2(n) 步。其中 n 为 nums 数组的长度。
 * 空间复杂度 : O(1)。 只使用了常数空间
 * @ClassName SolutionImpl
 * @Author Administrator
 * @Date 2020/5/20 10:26
 * @Version 1.0.0
 */
public class IterationBinarSearchSolutionImpl implements Solution {
    @Override
    public int findPeakElement(int[] nums) {
        int left = 0, right = nums.length - 1;
        while (left < right) {
            int mid = (left + right) / 2;
            if (nums[mid] > nums[mid + 1])
                right = mid;
            else
                left = mid + 1;
        }
        return left;
    }
}
